home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #2
/
Monster Media No. 2 (Monster Media)(1994).ISO
/
os2
/
chapm11.zip
/
CHAPMAN.CHA
< prev
next >
Wrap
Text File
|
1994-05-11
|
10KB
|
300 lines
CHAPMAN
Version: 1.1
Name: ChapMan
Time: '11.05.94 13.39.59'
SubapplicationNames...: Registration 'General Tools' .
SubapplicationFilenames...: GenTools Register .
Textvariables...: Comments Filename 'Init Code'
'Finalize Code' 'Class Template' 'Method Template'
'Method Comment Template' 'Programmer Id' Copyright .
Comments:
'ChapMan is a source control system that allows a far better
management and documentation of source code than the
original Smalltalk/V enviroment.'
Filename: ChapMan
'Init Code:' ''
'Finalize Code:' ''
'Class Template:' <default>
'Method Template:' <default>
'Method Comment Template:' <default>
'Programmer Id:' <default>
Copyright: <default>
LibraryBuilderScripts...: Registered Non-Registered .
'LibraryBuilderScript Registered:'
'| lib app apps unresolved |
"Set some variables and open an object library with feedback window."
app := ChApplication atName: ''ChapMan''.
lib := ObjectLibrary new: ''chapm11r''.
lib feedback: (TextWindow new
label: ''Library build for ChapMan''; openOn: '''') pane.
(apps := OrderedCollection with: app) addAll: app allSubApplications.
"Set various options."
lib description: ''ChapMan version '', ChApplication programVersion,
''for Smalltalk/V''.
lib includeSource: true.
"Remap some objects before adding them. E.g. remap
class variables to prevent adding references from them to the library."
(apps inject: Set new into: [:old :app |
old addAll: app ownedClasses; yourself]) do: [:class |
class classPool associationsDo: [:assoc |
assoc key = ''ChapManDictionary'' ifFalse: [
lib remap: assoc to: (Association key: assoc key value: nil)]]].
apps do: [:each |
lib includeSource: each name ~= ''Registration''.
each ownedClasses do: [:class |
class = ChApplicationBrowser ifFalse: [
lib addClass: class]
].
each requiredClasses do: [:class |
(each methodsForClass: class) do: [:method |
lib addMethod: (class compiledMethodAt: method)].
(each methodsForClass: class class) do: [:method |
lib addMethod: (class class compiledMethodAt: method)]
]
].
lib addClassNoMethods: ChApplicationBrowser.
ChApplicationBrowser methodDictionary do: [:method |
lib addMethod: method includeSource: true].
ChApplicationBrowser class methodDictionary do: [:method |
lib addMethod: method includeSource: method selector ~= #registerCheck:data:].
lib addMethod: (ChApplicationBrowser class
compiledMethodAt: #registerCheck:data:) includeSource: false.
"Resolve unresolved objects."
lib addImport: ClassReader.
lib addImport: ClassReader class.
lib addImport: (Smalltalk associationAt: #PMConstants).
"Set the initialization method."
lib initMethod: (ChApplication class compiledMethodAt: #initialize).
(unresolved := lib collectImports) isEmpty ifFalse: [
"lib inspect."
unresolved inspect]
ifTrue: [
lib writeFile]'
'LibraryBuilderScript Non-Registered:'
'| lib app apps unresolved |
"Set some variables and open an object library with feedback window."
app := ChApplication atName: ''ChapMan''.
lib := ObjectLibrary new: ''chapm11u''.
lib feedback: (TextWindow new
label: ''Library build for ChapMan''; openOn: '''') pane.
(apps := OrderedCollection with: app) addAll: app allSubApplications.
"Set various options."
lib description: ''ChapMan version '', ChApplication programVersion,
''for Smalltalk/V (Unregistered)''.
lib includeSource: false.
"Remap some objects before adding them. E.g. remap
class variables to prevent adding references from them to the library."
(apps inject: Set new into: [:old :app |
old addAll: app ownedClasses; yourself]) do: [:class |
class classPool associationsDo: [:assoc |
assoc key = ''ChapManDictionary'' ifFalse: [
lib remap: assoc to: (Association key: assoc key value: nil)]]].
apps do: [:each |
each ownedClasses do: [:class |
lib addClass: class].
each requiredClasses do: [:class |
(each methodsForClass: class) do: [:method |
lib addMethod: (class compiledMethodAt: method)].
(each methodsForClass: class class) do: [:method |
lib addMethod: (class class compiledMethodAt: method)].
]
].
"Resolve unresolved objects."
lib addImport: ClassReader.
lib addImport: ClassReader class.
lib addImport: (Smalltalk associationAt: #PMConstants).
"Set the initialization method."
lib initMethod: (ChApplication class compiledMethodAt: #initialize).
(unresolved := lib collectImports) isEmpty ifFalse: [
"lib inspect."
unresolved inspect]
ifTrue: [
lib writeFile]'
OwnedClasses...: ChApplication ChSystemApplication
ChUserApplication ChChangeItem ChWrapper
ChChangeClassReader ChApplicationBrowser ChChangeBrowser
ChIPFBrowser ChLibraryBuilder .
RequiredClasses...: Behavior Class SystemDictionary .
'Behavior Methods...:'
directSubclasses .
'Behavior class Methods...:'
.
'Class Methods...:'
changeSuperclassTo: .
'Class class Methods...:'
.
'ChApplication ClassComments:'
'ChApplication is an abstract class. Instance class are ChSystemApplication
and ChUserApplication.
A ChApplication holds all data for an application. An application can own or
require a class. Ownership implies that all instance and class methods belong
to the class. An application which only requires a class holds a selected set
of instance and class methods for that class only.'
'ChSystemApplication ClassComments:'
'Description: This class is no real application but serves as a wrapper
for the system classes.
Public Methods: None
Instance Variables: None
Class Variables: None
Global Variables: None
Pool Dictionaries: None
Date By Description
03.05.94 ch Creation
Copyright (c) 1994 Parox GmbH'
'ChUserApplication ClassComments:'
'A ChSystemApplication holds data for user applications.
Internal variables:
methodDictionary
a dictionary with keys the names of required or owned classes
and values arrays of the following form:
value at: 1 instance methods in application (undefined for an owned class)
value at: 2 class methods in application (undefined for an owned class)
value at: 3 true if the application owns the class,
false if the application requires the class
libraryBuilderScript
The ObjectLibraryBuilder script which creates a DLL from the application.
Date By Description
06.05.94 ch Creation
Copyright (c) 1994 Parox GmbH'
'ChChangeItem ClassComments:'
'Instance variables:
classString - the name of the class of the change as a string
selector - the selector of the change as a symbol
description - a description of the change item if it does not fit
in the selector and classString variables. Maybe any data.
Used with #chapManVariable and #classComment
position - the position of the change in the source stream
type - specifies the type of the change:
#evaluate for an evaluated expression
classString = selector = description = nil
#defineClass for a class definition
classString = class, selector = description = nil
#method for a method definition
classString = class, selector = selector, description = nil
#removeSelector for a selector removal
classString = class, selector = selector, description = nil
#removeClass for class removal
classString = class, selector = description = nil
#savedImage for a saved image message
classString = selector = description = nil
#open for a open window evaluation
classString = selector = description = nil
#chapManVariable for a ChapMan variable definitions
classString = selector = nil,
description = Array with: application name with: variable name
#classComment
classString = class, selector = description = nil'
'SystemDictionary Methods...:'
allImplementorsOf: allSendersOf: extendedSendersOf:
extendedSendersOf:in: logEvaluate:title: .
'SystemDictionary class Methods...:'
.
'ChApplicationBrowser ClassComments:'
'Variable:
textType (String)
first chararacter uppercase: The application text variable with name textType
''nothing'' : nothing has been selected, usually the copyright notice.
''classDef'' : class definition
''newMethod'' : the new method item has been selected, display the template
''methodDef'' : method definition'
'ChChangeBrowser ClassComments:'
'The ChangeBrowser reads a Smalltalk source in chunk format and
let you select and browse these changes.
Variable description:
changeFile : aStream with the changes to read
changes : an OrderedCollection of the ChangeItems in changeFile
classFilter : name of the class which methods should be displayed or nil
displayedChanges : an OrderedCollection of the displayed ChangeItems
displayMarked : can contain #displayMarked, #displayUnmarked, #displayAll.
Indicate which type of marked items should be displayed.
displayMenu : the Menu ''Display''
extraTitle : a String which is displayed after ''ChangeBrowser'' in the title window.
markedChange : the Set of marked changes.
selectedChange : the selected ChangeItem'
'ChIPFBrowser ClassComments:'
'Description:
Public Methods: None
Instance Variables: None
Class Variables: None
Global Variables: None
Pool Dictionaries: None
Date By Description
07.05.94 ch Creation
Copyright (c) 1994 Parox GmbH'
'ChLibraryBuilder ClassComments:'
'Description:
Implement the code to create object libraries (DLLs) from the
information supplied in applications.
Public Methods: None
Instance Variables: None
Class Variables: None
Global Variables: None
Pool Dictionaries: None
Date By Description
09.02.94 ch Creation
Copyright (c) 1994 Parox GmbH'